通俗易懂:图解10大CNN网络架构
作者 | Raimi Karim
译者 | Major
编辑 | 赵雪
出品 | AI科技大本营(ID: rgznai100)
导语:近年来,许多卷积神经网络( CNN )跃入眼帘,而随着其越来越深的深度,我们难以对某个 CNN 的结构有较明确的了解。因此本文精心选取了 10 个 CNN 体系结构的详细图解进行讲述。
你如何跟踪不同的 CNN? 最近几年,我们看到许多 CNN 诞生。这些网络变得非常深,以致对整个模型可视化变得极为困难。我们把它们当作一些黑盒模型。
也许你不是这样想的。不过如果你确实遇到这样的问题,本文正是你需要阅读的。这篇文章是对 10 个常见的 CNN 体系结构的图解,由作者精心挑选。这些图解展示了整个模型的精华,无需去逐个浏览那些 Softmax 层。除了这些示意图,作者还提供了一些注释,阐述了它们是如何不断演变的——卷积层从 5 到 50 个、从普通的卷积层到卷积模块、从 2~3 tower 到 32 tower 、卷积核从 7⨉7 到 5⨉5 。
所谓“常见”,是指这些模型的预训练权重通常被深度学习库(如 TensorFlow 和 PyTorch )所共享,提供给开发者使用,这些模型通常会在课堂上讲授。其中一些模型已经在竞赛(如 ILSVRC ImageNet 大规模图像识别挑战)中取得了成功。
将要讨论的10个架构与相应的论文发布时间
写这篇文章的原因在于没有多少博客和文章提到这些紧凑的结构图解。因此,作者决定自己写一篇作为参考。出于这个目的,作者阅读了本文提到的论文和代码(绝大部分是 TensorFlow 和 Keras ),得到了这些成果。这里还要特别指出,这些 CNN 网络结构的来源五花八门——计算机硬件性能的提高、ImageNet 竞赛、解决特定问题、新想法等等。一位在 Google 工作的研究员 Christian Szegedy 曾经提到:
“这个进程绝大多数不只是由于更强大的硬件、更大的数据集和更大的模型,更是一系列新想法、算法和网络结构的改进”。
现在让我们来看看这些“巨兽”般的网络架构是如何逐渐演变的。
【作者注】对可视化的注释:请注意,在这些示意图中,作者略去了一些信息,如卷积过滤器的数量、Padding、Stride、Dropout 和 flatten 操作。
目录(按发表时间排序)
LeNet-5
AlexNet
VGG-16
Inception-v1
Inception-v3
ResNet-50
Xception
Inception-v4
Inception-ResNets
ResNeXt-50
图例
1. LeNet-5 (1998)
LeNet-5 一个最简单的网络架构。它有 2 个卷积层和 3 个全连接层(总共 5 层,这种命名方式在神经网络中很常见,这个数字代表卷积层和全连接层的总和)。Average-Pooling 层,我们现在称之为亚采样层,有一些可训练的权重(现在设计 CNN 网络时已经不常见了)。这个网络架构有大约 6 万个参数。
有哪些创新?
这个网络架构已经成为标准的“模板”:堆栈式卷积和池化层,以一个或多个全连接层作为网络的末端。
相关论著
论文: Gradient-Based Learning Applied to Document Recognition
链接:http://yann.lecun.com/exdb/publis/index.html?source=post_page
作者: Yann LeCun, Léon Bottou, Yoshua Bengio, and Patrick Haffner 发表在: Proceedings of the IEEE (1998)
2. AlexNet (2012)
图2: AlexNet 网络结构
AlexNet 有 60 M 个参数,共有 8 层:5 个卷积层和 3 个全连接层。AlexNet 只是在 LeNet-5 中堆叠了更多的层。在该论文发表时,论文作者指出他们的网络架构是“当前最大的 ImageNet 子集卷积神经网络之一”。
有哪些创新?
1. 他们的网络架构是首个采用 ReLU 作为激活函数的 CNN ;
2. 在 CNN 中采用交织池化(Overlapping pooling)。
相关论著
论文: ImageNet Classification with Deep Convolutional Neural Networks 链接:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks?source=post_page 作者: Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton. University of Toronto, Canada. 发表在: NeurIPS 2012
3. VGG-16 (2014)
图3: VGG-16 网络结构
你应该已经注意到,CNN 开始变得越来越深。这是因为提高深度神经网络性能最直接的方法就是增加它们的规模( Szegedy et. al. )。视觉几何研究小组( VCG )的研究人员发明了 VCG-16 ,拥有 13 个卷积层和 3 个全连接层,继承了 AlexNet 的 ReLU 传统。它由 138 M 个变量组成,要占用 500 MB 存储空间。他们也设计了一个更深的版本 VCG-19 。
有哪些创新?
正如他们在论文摘要中所提到的,该论文的贡献是设计更深的网络(大约是 AlexNet 深度的两倍)。
论文: Very Deep Convolutional Networks for Large-Scale Image Recognition 链接:https://arxiv.org/abs/1409.1556?source=post_page 作者: Karen Simonyan, Andrew Zisserman. University of Oxford, UK. 发表在 arXiv preprint, 2014
4. Inception-v1 (2014)
采用不同过滤器的并行卷积塔,然后进行堆叠,采用 1×1、3×3 、5×5 卷积核,识别不同特征,从而对其进行“聚类”。这个想法受到 Arora 等人的论文“ Provable bounds for learning some deep representations ”启发,建议采用逐层构建的方式,这样可以分析最后一层的相关统计,并把它们聚类到高相关的各单元组。 1×1 卷积核用来进行维度裁减,以避免计算瓶颈。 1×1 卷积核在一个卷积内增加了非线性。 该论文作者也引入了两个辅助分类器,以在分类器的最后阶段扩大差异,增加了反向传播的网格信号,提供了额外的正则化。辅助网络(与辅助分类分类器相连的分支)在推理时被丢弃。
作者注:模块的命名( Stem 和 Inception )在这个版本的 Inception 网络架构中还没有提出,直到后面一些版本即 Inception-v4 和 Inception-ResNet 中才正式使用。作者把这些加入到这里是为了更容易进行比较。
采用紧密模块/板块构建网络。不采用堆叠卷积层的方法,而是堆叠由卷积层组成模块的方法。Inception 这一名字来自于科幻电影《盗梦空间》。
论文: Going Deeper with Convolutions 链接:https://arxiv.org/abs/1409.4842?source=post_page 作者: Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. Google, University of Michigan, University of North Carolina 发表在: 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
5. Inception-v3 (2015)
模块的命名( Stem 和 Inception )在这个版本的 Inception 网络架构中还没有提出,直到后面一些版本即 Inception-v4 和 Inception-ResNet 中才正式使用。作者把这些加入到这里是为了更容易进行比较。
首先采用批量正则化(为了简化,上图中未反映这一点)的设计者之一。
把 n×n 卷积分解成不对称的卷积 1×n and n×1 卷积。 把 5×5 卷积分解成 2 个 3×3 卷积操作 把 7×7 卷积替换成一系列 3×3 卷积。
论文: Rethinking the Inception Architecture for Computer Vision 链接:https://arxiv.org/abs/1512.00567?source=post_page 作者: Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna. Google, University College London 发表在: 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
6. ResNet-50 (2015)
大量避免使用全连接(他们不是第一个这么做的)。 设计更深的 CNN 网络(最大可达 152 层),而不必损失网络的生成能力。 首先采用批量正则化的网络架构之一。
论文: Deep Residual Learning for Image Recognition 链接:https://arxiv.org/abs/1512.03385?source=post_page 作者: Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Microsoft 发表在: 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
7. Xception (2016)
首先,交叉信道(或交叉特征图)相关性可以被 1×1 卷积探测到。 因此,每个信道的空间相关性可以通过常规的 3×3 或 5×5 卷积探测到。
完全基于深度可分解卷积层,引入 CNN。
论文: Xception: Deep Learning with Depthwise Separable Convolutions 链接:https://arxiv.org/abs/1610.02357?source=post_page 作者: François Chollet. Google. 发表在: 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
8. Inception-v4 (2016)
改变了 Stem 模块。 增加了更多的 Inception 模块。 采用了 Inception-v3 的 Uniform 选择,意味着在每个模块中采用了相同数量的过滤器。
论文: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 链接:https://arxiv.org/abs/1602.07261?source=post_page 作者: Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google. 发表在:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence
9. Inception-ResNet-V2 (2016)
把 Inception 模块转换为残差 Inception 模块。 增加了更多的 Inception 模块。 在 Stem 模块后面,增加了一种新型的 Inception 模块(Inception-A)。
论文: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 链接:https://arxiv.org/abs/1602.07261?source=post_page 作者: Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google 发表在: Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence
10. ResNeXt-50 (2017)
在一个模块中增加了并行塔的数量(基数)。
论文: Aggregated Residual Transformations for Deep Neural Networks 链接:https://arxiv.org/abs/1611.05431?source=post_page 作者: Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, Kaiming He. University of California San Diego, Facebook Research 发表在: 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
附录:Network In Network (2014)
MLP 卷积层, 1×1 卷积。 全局平均池化(对每个特征图进行平均,把结果向量反馈到 Softmax 层)。
论文: Network In Network 链接:https://arxiv.org/abs/1312.4400?source=post_page 作者: Min Lin, Qiang Chen, Shuicheng Yan. National University of Singapore 发表在:arXiv preprint, 2013
Netron TensorBoard API by TensorFlow plot_model API by Keras pytorchviz package
https://github.com/tensorflow/models/tree/master/research/slim/nets(github.com/tensorflow)
Implementation of deep learning models from the Keras team(github.com/keras-team)
Lecture Notes on Convolutional Neural Network Architectures: from LeNet to ResNet (slazebni.cs.illinois.edu)
Review: NIN — Network In Network (Image Classification)(towardsdatascience.com)
(*本文为 AI科技大本营编译文章,转载请联系微信 1092722531)
社群福利
扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周一、三、五更新技术福利,还有不定期的抽奖活动~
◆
精彩推荐
◆
60+技术大咖与你相约 2019 AI ProCon!大会早鸟票已售罄,优惠票速抢进行中......2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。
推荐阅读
自动驾驶激荡风云录:来自圈内人的冷眼解读
不止最佳长论文,腾讯AI在ACL上还有这些NLP成果
认知智能的突围:NLP、知识图谱是AI下一个“掘金地”?
5G+AI重新定义生老病死?
干货 | 20个Python教程,掌握时间序列的特征分析(附代码)
2019 年度程序员吸金榜:你排第几?
字节跳动入局全网搜索;思科回应中国区裁员;IntelliJ IDEA 新版发布!
知名饮料制造商股价暴涨500%惊动FBI,只因在名字中加入了"区块链" ?